﻿using Tibet.GUI.Contrato;
using Tibet.Logica.FabricaLogica;
using Tibet.Entidades;
using Tibet.Logica.Comandos;

namespace Tibet.GUI.Presentador
{
    /// <summary>
    /// Clase que maneja la lógica de la interfaz de usuario para la 
    /// modificación de usuarios
    /// </summary>
    public class PresentadorModificacionUsuario
    {
        private IContratoModificacionUsuario _modificacionUsuario;

        /// <summary>
        /// Constructor de la clase
        /// </summary>
        /// <param name="modificacionUsuario">
        /// Datos de la página de modificación de usuario requeridos para 
        /// modificar un usuario
        /// </param>
        public PresentadorModificacionUsuario
            ( IContratoModificacionUsuario modificacionUsuario )
        {
            _modificacionUsuario = modificacionUsuario;
        }

        /// <summary>
        /// Código a ejecutar cuando el usuario presiona el botón Modificar
        /// para modificar un usuario
        /// </summary>
        /// <returns>Si la modificación fue exitosa o no</returns>
        public bool ClickModificar()
        {
            Credencial credencial = new Credencial
                (_modificacionUsuario.NombreUsuario,
                _modificacionUsuario.Contrasenha);

            Usuario usuario = new Usuario(_modificacionUsuario.Nombre, "",
                _modificacionUsuario.Apellido, "", _modificacionUsuario.Email,
                1, credencial, null);

            Comando comando = FabricaComandoUsuario.
                CrearComandoModificarUsuario(usuario);
            comando.Ejecutar();
            if (!(comando.Flag))
                return false;

            comando = FabricaComandoCredencial.
                CrearComandoModificarCredencial(credencial);
            comando.Ejecutar();
            return comando.Flag;
        }
    }
}